
        <html>
			<head>
			     <title>小白欢乐多——记ssctf的几道题目 - louys</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/13345">http://drops.wooyun.org/tips/13345</a></h1>
				
      <p>
        <p>二哥说过来自乌云，回归乌云。Web400来源于此，应当回归于此，有不足的地方欢迎指出。</p>

<h1>0x00 Web200</h1>

<hr />

<p>先不急着提web400，让我们先来看看web200的xss。</p>

<p>Url：<a href="http://960a23aa.seclover.com/index.php?xss=xxx">http://960a23aa.seclover.com/index.php?xss=xxx</a></p>

<p>显然参数xss是要上payload。先大概看一眼都过滤了什么。</p>

<!--more-->

<p><img src="http://static.wooyun.org//drops/20160302/20160302074658454521.png" alt="p1" /></p>

<p>可以发现尖括号和冒号都过滤成下划线了，并且尝试了好几种姿势也无法绕过。</p>

<p>再看看其他的过滤规则。</p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074700438482.png" alt="p2" /></p>

<p>基本都过滤了，就剩下一个孤零零的1了。</p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074702206283.png" alt="p3" /></p>

<p>再祭出《web前端安全》提到的奇妙payload，注意到onerror中的on被吃掉了。</p>

<p>连打多个on也是没有用的，联想到以前玩sql注入的经验，oonn这样的形式是能打出on来的。看到这结果的存在，顿时感觉来了希望。</p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074704518234.png" alt="p4" /></p>

<p>这种形式似乎已经很接近了，但是万恶的下划线仍旧无法解决，一度陷入死局了。</p>

<p>后来，学长说仔细看看源码，那谁写过网页他或许能看出什么。</p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074705505595.png" alt="p5" /></p>

<p>注意到开头一句，似乎平时我不是那么写的，又注意到页面有css，就跑偏到了<a href="http://drops.wooyun.org/web/11539">http://drops.wooyun.org/web/11539</a>这篇文章，但是似乎并没有什么用。百度了一下第一句话。</p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074707438936.png" alt="p6" /></p>

<p>！！？识别和加载，赶紧试了一下。</p>

<p>AngularJS 的表达式是写在双大括号内：<code>{{ expression }}</code>。</p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074708496867.png" alt="p7" /></p>

<p>识别了！</p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074710165438.png" alt="p8" /></p>

<p>确定了版本号以后，队友就找到一发payload。</p>

<p>经过加工：<code>{{'a'.coonnstructor.prototype.charAt=[].join;$evevalal('x=1} } };aleonrt(1)//');}}</code></p>

<p><img src="http://static.wooyun.org//drops/20160302/20160302074711242439.png" alt="p9" /></p>

<p>弹弹弹了:)</p>

<h1>0x01 Misc：饥荒_MC</h1>

<hr />

<p>在web400前，那就再提提misc的饥荒_MC，这是我见过的最有趣的ctf题目没有之一，之前听说了好久的websocket也第一次见到实例。</p>

<p>打开一看，似乎是个小游戏。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747133337410.png" alt="p10" /></p>

<p>一般出现在ctf里的游戏不能轻视。</p>

<p>第一关一切平和，直通第二关。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747161114111.png" alt="p11" /></p>

<p>第二关，似乎要找到一个key才能通关，顿感道路坎坷。Key是什么也没说，只说空格是个功能按键，那就先跑跑全图呗。跑了一会感觉太烦了，找队友写了个按键精灵来模拟。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747178975812.png" alt="p12" /></p>

<p>但是跑完这张图也没能进去，就想会不会key在第一关，要知道这种游戏向来不按常理出牌。</p>

<p>就开始跑第一关，突然发生了一件奇妙的事情，一卡我突然传送到了一个奇怪的地方。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747199665613.png" alt="p13" /></p>

<p>似乎由于不明原因，我突然跳关到了第三关。（后来想想可能是时间竞争？）</p>

<p>第三关是个砍树关，由于已经靠按键精灵连过两关，思路已经被定势了，已经听不进学长说什么js本地调试了，义无反顾的跳进坑里。要砍9999个木头来做木镐（一切始于木头），发现要按住空格一秒才能砍到一个木头，感觉似乎哪里不对，然而还是找个东西按着空格。。。直到5分钟后，发现被管理员踢掉了，才最终确定这是个坑，不可能通过小伎俩来过了。只得打开js代码，幸亏寒假看了一下《js-dom编程艺术》。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747212193614.png" alt="p14" /></p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747238526115.png" alt="p15" /></p>

<p>参数有个isReady，要加载完全部的图片才能运作，打开firebug，把图片另存为，放到相应位置，再写个html调用game.js(直接档网页上的就行)</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747241058116.png" alt="p16" /></p>

<p>突然一下就开启上帝视角了，毫不犹豫的跳关到level 4，却发现服务器提示你的宝石剑在哪？然后就被踢了。观察了一下代码，似乎应该有一只boss。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747263986017.png" alt="p17" /></p>

<p>大概长成这样。</p>

<p>观察代码</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747271467218.png" alt="p18" /></p>

<p>实在不行，我就召唤一只boss出来，然后burp抓包，把玩家改为boss，但是似乎没有什么用，应该是在服务器端做的验证。</p>

<p>注意到hero的几种图片。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747297064619.png" alt="p19" /></p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747304475720.png" alt="p20" /></p>

<p>似乎这两种状态我都没有见到过，感觉哪里不对，再研读代码。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747327001821.png" alt="p21" /></p>

<p>木头关下面有钻石关，并且注意到最后一关，似乎有两个点会自杀，幸亏没有过去。（第二关前面的门是假门，根本不存在key）</p>

<p>找到了木头采集函数修改一下。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747348063922.png" alt="p22" /></p>

<p>直接9999，木镐get。</p>

<p>进入钻石关</p>

<p>这个似乎和木头关的函数差不多。（图片已经修改过）</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747367455023.png" alt="p23" /></p>

<p>当然直接9999被踢掉线了，尝试了一下似乎50是极限了。那就要点200下，而且感觉上传时间还有间隔限制，于是又打开了恋恋不舍的按键精灵。虽然慢，还是能在1，2分钟里完成任务。</p>

<p>终于拿到钻石剑了，如今我已天下无敌，走，捅boss去。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747376516524.png" alt="p24" /></p>

<p>系统提示。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747384542625.png" alt="p25" /></p>

<p>要捅15下boss或者杀5个人，做为一个wow的pve休闲玩家我当然选择捅15下boss（注意短距离武器那句话，结合自杀点是把弓箭）。</p>

<p>然而发现boss近距离一刀我就躺了，远程扣血导致pvp的难度也挺高（除非送人头）。循环往复几次，终于感觉按键精灵的速度不能满足我了（主要是发现学长在我旁边一下就拿到钻石剑了）。就把条件注释掉，发现上传速度不再卡顿，但是按200下还是太烦，最终又打开了按键精灵。（这里其实可以写个循环，论思维定势的可怕）。</p>

<p>既然近距离一刀秒，我就修改了攻击范围，又为了方便瞄准，又把boss图像修改了。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747402901726.png" alt="p26" /></p>

<p>大概是这样，可惜pve休闲玩家的水准已经不足以让我靠走位捅到它15下了。</p>

<p>最终在学长提示数据交互的时候终于恍然大悟。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747421427527.png" alt="p27" /></p>

<p>把攻击地址直接改为boss地址，然后找个阴暗的小角落就ok了。</p>

<h1>0x02 Web400</h1>

<hr />

<p>终于到了web400，页面打开看一眼（url：<a href="http://b525ac59.seclover.com/">http://b525ac59.seclover.com/</a>）</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747432507828.png" alt="p28" /></p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747458351929.png" alt="p29" /></p>

<p>一个github的图标和不要去爆破的提示，点开一看是github第三方授权的页面。感觉应该不会是github认证的漏洞。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747473344830.png" alt="p30" /></p>

<p>绑定后样子是这样，一张github头像的图片，github的uid，一开始不知道为什么名字那边是none，结合find flag man，猜测最后的flag应该会输出在name的位置，网络也只请求了一张图片。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747502520431.png" alt="p31" /></p>

<p>又一头雾水不知道该怎么办了。</p>

<p>知道burp抓包的时候，把cookie都去掉后发现了这个。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747527136132.png" alt="p32" /></p>

<p>Flask似乎有点眼熟，感觉在哪里看到过，于是翻找了一下。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747538637333.png" alt="p33" /></p>

<p>就在几天前的乌云知识库发表的文章，文章提到了控制模板内容来进行任意代码执行。再看页面的情况，感觉确实挺像那么回事的，模板里的内容都是我github上的，那么接下来就是找到可控点，来调用python了。接下来就一直跑偏到那张图片，我一直以为图片是可控内容，但是捣鼓了半天也没什么用。后来点开github的设置突然恍然大悟，明白了为什么name是none。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747553026534.png" alt="p34" /></p>

<p>因为我根本没设置名字Orz。赶紧把名字设成{{7*7}}。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747563845135.png" alt="p35" /></p>

<p>发现被解析了（和那道xss神似的方法）。</p>

<p>原文作者的payload不能直接使用，对python的内置函数也不熟悉，只得翻阅官方手册。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747572431636.png" alt="p36" /></p>

<p>找到了打开文件的方法，感觉这个靠谱，试了一下，似乎没有什么用，于是去github上面搜索了一下内置的使用方法。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020747591483437.png" alt="p37" /></p>

<p>问题太多一下子翻不过来，注意到有10个用户用了这个奇葩名字，就打开看了一下。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020748017838138.png" alt="p38" /></p>

<p>！！看我都找到了什么，复制一句看的顺眼的，就爆flag了。</p>

<p><img src="http://static.wooyun.org//drops/20160302/201603020748034360539.png" alt="p39" /></p>

<p>这个应该算是官方福利吧，毕竟不是什么人都会写payload的。</p>

<p>以上，完。没有什么太多的技术干货，基本都是自己逗逼的纪实，不管审核过没过，记录一下还是值得的。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          